Mám soubor dat, jak je uvedeno níže jméno col1 col2 a 10,3 10.9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4,5 4,0 Chci porovnat col1 a col2 mého df a chci vytvořit další sloupec, ve kterém při porovnávání hodnot col1 a col2, pokud se hodnota col2 zvyšuje z col1, pak chci zadat zvýšení vedle nich v mém sloupci a pokud jsou klesající pak chci psát klesající a žádné změny, pokud jsou stejné a chci svůj výstup takhle jméno col1 col2 col3 a 10,3 10,9 zvýšení b 11 15 se zvyšuje c 20 7,2 klesá d 6,2 6,2 beze změny e 5,3 5,4 se zvyšuje f 4,5 4,0 klesá
2021-01-31 08:14:13
S dplyr: df%>% mutovat (Col3 = ifelse (col2 == col1, "žádná změna", ifelse (col2> col1, "rostoucí", "klesající"))) Nebo pomocí case_when, jak navrhuje @akrun: df%>% mutovat (Col3 = case_when (col1 == col2 ~ "žádná změna", col2> col1 ~ "Zvyšování", TRUE ~ "klesající")) Výsledek: jméno col1 col2 col3 1 a 10,3 10,9 se zvyšuje 2 b 11,0 15,0 zvýšení 3 c 20,0 7,2 klesá 4 d 6,2 6,2 beze změny 5 e 5,3 5,4 se zvyšuje 6 f 4,5 4,0 klesá Data: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6,2, 5,3, 4,5), col2 = c (10,9, 15, 7,2, 6,2, 5,4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Můžeme odečíst col1 od col2 a poté pomocí znaménka přiřadit hodnoty df $ col3 <- c ("klesající", "beze změny", "rostoucí") [znaménko (df $ col1 - df $ col2) + 2] df # název col1 col2 col3 # 1 a 10,3 10,9 klesá # 2 b 11,0 15,0 klesá # 3 c 20,0 7,2 se zvyšuje # 4 d 6,2 6,2 beze změny # 5 e 5,3 5,4 klesá # 6 f 4,5 4,0 roste Nebo pomocí dplyr můžeme použít case_when knihovna (dplyr) df%>% mutovat (col3 = case_when (col1 == col2 ~ "žádná změna", col1> col2 ~ "rostoucí", TRUE ~ "klesající")) | Základna R. df $ col3 <-s (df, ifelse (col1> col2, "klesající", ifelse (col1